package innerclass;

/**
 * 成员内部类
 */

public class MemberInnerClass {

    public static void main(String[] args) {

        //访问外部类的方法
        MemberOuter outer = new MemberOuter();
        outer.outerFunction();

        //外部其他类使用成员内部类
        //1.使用外部类的对象，调用new方法
        MemberOuter.Inner inner01 = outer.new Inner();
        //2.在外部类中编写一个方法，返回成员内部类的实例
        MemberOuter.Inner inner02 = outer.getInner();

    }

}

//外部类
class MemberOuter {

    private int num = 10;

    public String name;

    //成员内部类定义
    class Inner{
        public void innerFunction(){
            System.out.println("Outer_num: " + num);
        }
    }

    //在外部类的方法中，访问成员内部类
    public void outerFunction(){
        //实例化一个成员内部类的对象，并调用成员内部类的方法
        Inner inner = new Inner();
        inner.innerFunction();
    }

    //通过方法返回成员内部类的实例
    public Inner getInner(){
        return new Inner();
    }

}